import os

from sparkai.llm.llm import ChatSparkLLM, ChunkPrintHandler
from sparkai.core.messages import ChatMessage

try:
    from dotenv import load_dotenv
except ImportError:
    raise RuntimeError(
        'Python environment for SPARK AI is not completely set up: required package "python-dotenv" is missing.'
    ) from None

load_dotenv()


def chat(code):

    messages = [
        {
            "role": "user",
            "content": r"""
            请你帮我评估一段代码,
            你需要review这段代码{{{code}}}, 并作出以下答复内容:
            评分(百分制),批改建议(至少一项,至多四项),
            评分依据代码的html结构部分和css样式部分,
            从代码的规范性、完整性、正确性等几个方面进行评价并进行打分(比如为什么100分为什么70分,有哪些点没有到位,还需要加强哪些)
            所有回复内容标点符号均为英文字符
            回复格式均以json字符串格式: {{totalScore:xxx, suggest:[{{1.title:代码规范性, score:xxx, comment:xxx}},{{2.title:代码完整性 score:xxx, comment:xxx}},{{3.title:代码正确性 score:xxx, comment:xxx}}]}}
            """.format(code=code)
        }
    ]
    spark = ChatSparkLLM(
        spark_api_url=os.environ["SPARKAI_URL"],
        spark_app_id=os.environ["SPARKAI_APP_ID"],
        spark_api_key=os.environ["SPARKAI_API_KEY"],
        spark_api_secret=os.environ["SPARKAI_API_SECRET"],
        spark_llm_domain=os.environ["SPARKAI_DOMAIN"],
        request_timeout=30, 
        streaming=True,
    )
    messages = [ChatMessage(role="user", content=messages[0]["content"])]
    return spark.stream(messages)
